package com.mo.axion.handler.handler;

import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Mo
 * @createTime 2024/2/23 15:45
 * @description 渠道对应handler处理器的映射存储类
 */
@Component
public class HandlerHolder {
    private Map<Integer, Handler> handlerMap = new HashMap<>(128);

    /**
     * 初始化时调用 存储不同渠道对应的handler
     * @param channelCode 渠道代码
     * @param handler 对应下发渠道handler
     */
    public void putHandler(Integer channelCode, Handler handler) {
        handlerMap.put(channelCode, handler);
    }

    /**
     * 根据下发渠道code获取对应handler实例
     * @param channelCode 下发渠道代码
     * @return
     */
    public Handler route(Integer channelCode) {
        return handlerMap.get(channelCode);
    }
}
